﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace DAL
{
    /// <summary>
    /// 年级表 数据操作类
    /// </summary>
    public class Grades
    {
        DbHelper dbHelper = null;
        public Grades()
        {
            dbHelper = new DbHelper();
        }

        #region 根据查询条件 返回 列表
        /// <summary>
        /// 根据查询条件 返回 列表
        /// </summary>
        /// <returns></returns>
        public List<MODEL.Grades> QueryListByCondition(SqlParameter[] paras)
        {
            MODEL.Grades model = null;
            StringBuilder sbSql = new StringBuilder("select * from Grades where GIsDel=0 ");
            if (paras != null)//如果参数数组不为空，则循环生成sql的条件语句
            {
                for (int i = 0; i < paras.Length; i++)//循环所有参数(如: and PWD=@SPWD)
                {
                    SqlParameter p = paras[i];
                    sbSql.Append(" and ");//第二个参数开始 在前面加 and
                    sbSql.Append(p.ParameterName.Substring(1));//获得参数所对应的列名
                    sbSql.Append("=" + p.ParameterName);
                }
            }
            //读取数据库 返回查询到的数据表(如果参数为null,则直接执行sql语句，否则带参数执行sql语句)
            DataTable dt = (paras == null) ? dbHelper.GetDataTable(sbSql.ToString()) : dbHelper.GetDataTable(sbSql.ToString(), paras);
            //准备要返回的泛型集合
            List<MODEL.Grades> list = null;
            if (dt.Rows.Count > 0)//如果查询到的行数大于0
            {
                list = new List<MODEL.Grades>();//实例化集合对象
                foreach (DataRow dr in dt.Rows)//循环临时表的行记录
                {
                    model = new MODEL.Grades();//每循环一行生成一个实体
                    SetDr2Model(dr, model);//将行数据填入实体对应的属性
                    list.Add(model);//将实体对象加入集合
                }
            }
            return list;
        }
        #endregion

        #region 将 数据行 转换 成 实体对象
        /// <summary>
        /// 将 数据行 转换 成 实体对象
        /// </summary>
        /// <param name="dr">数据行</param>
        /// <param name="model">实体对象</param>
        public void SetDr2Model(DataRow dr, MODEL.Grades model)
        {
            //if (dr["GID"].ToString() != "")
            //{
            //    model.GID = int.Parse(dr["GID"].ToString());
            //}
            //model.GName = dr["GName"].ToString();
            //if (dr["GIsDel"].ToString() != "")
            //{
            //    model.GIsDel = bool.Parse(dr["GIsDel"].ToString());
            //}
            //if (dr["GAddtime"].ToString() != "")
            //{
            //    model.GAddtime = DateTime.Parse(dr["GAddtime"].ToString());
            //}
        }
        #endregion
    }
}
